/*	This file is part of NKOpcTunnel.
*
*	Copyright (c) Henryk Anschuetz 
*	Berlin, Germany
*
*	mailto:uzuul23@online.de
*
*	NKOpcTunnel is free software: you can redistribute it and/or modify
*   it under the terms of the GNU General Public License as published by
*   the Free Software Foundation, either version 3 of the License, or
*   (at your option) any later version.
*
*   NKOpcTunnel is distributed in the hope that it will be useful,
*   but WITHOUT ANY WARRANTY; without even the implied warranty of
*   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
*   GNU General Public License for more details.
*
*   You should have received a copy of the GNU General Public License
*   along with NKOpcTunnel.  If not, see <http://www.gnu.org/licenses/>.
*
*/

// NkTnlClientCnf.cpp : Defines the class behaviors for the application.
//

#include "stdafx.h"
#include "NkTnlClientCnf.h"
#include "NkTnlClientCnfDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#endif

// CNkTnlClientCnfApp

BEGIN_MESSAGE_MAP(CNkTnlClientCnfApp, CWinApp)
	ON_COMMAND(ID_HELP, &CWinApp::OnHelp)
END_MESSAGE_MAP()

// CNkTnlClientCnfApp construction

CNkTnlClientCnfApp::CNkTnlClientCnfApp()
{
	// support Restart Manager
	m_dwRestartManagerSupportFlags = AFX_RESTART_MANAGER_SUPPORT_RESTART;

	// TODO: add construction code here,
	// Place all significant initialization in InitInstance
}

// The one and only CNkTnlClientCnfApp object

CNkTnlClientCnfApp theApp;

// CNkTnlClientCnfApp initialization

BOOL CNkTnlClientCnfApp::InitInstance()
{
	// InitCommonControlsEx() is required on Windows XP if an application
	// manifest specifies use of ComCtl32.dll version 6 or later to enable
	// visual styles.  Otherwise, any window creation will fail.
	INITCOMMONCONTROLSEX InitCtrls;
	InitCtrls.dwSize = sizeof(InitCtrls);
	// Set this to include all the common control classes you want to use
	// in your application.
	InitCtrls.dwICC = ICC_WIN95_CLASSES;
	InitCommonControlsEx(&InitCtrls);

	CWinApp::InitInstance();

	AfxEnableControlContainer();
	::CoInitializeEx(0, COINIT_MULTITHREADED);

	NkSocket::CSocket::initialize();
	NkSSL::COpenSSLCtx::initialize();

	// Standard initialization
	// If you are not using these features and wish to reduce the size
	// of your final executable, you should remove from the following
	// the specific initialization routines you do not need
	// Change the registry key under which our settings are stored
	// TODO: You should modify this string to be something appropriate
	// such as the name of your company or organization
	//SetRegistryKey(_T("Local AppWizard-Generated Applications"));

	NkTrace::CTrace& Trace = NkTrace::CTrace::Instance();
	Trace.Subscribe(this);
	Trace.TraceLevel(NkTrace::CTrace::TraceLevel_3);

	CNkTnlClientCnfDlg dlg;
	m_pMainWnd = &dlg;
	INT_PTR nResponse = dlg.DoModal();
	if (nResponse == IDOK)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with OK
	}
	else if (nResponse == IDCANCEL)
	{
		// TODO: Place code here to handle when the dialog is
		//  dismissed with Cancel
	}
	else if (nResponse == -1)
	{
		TRACE(traceAppMsg, 0, "Warning: dialog creation failed, so application is terminating unexpectedly.\n");
	}

	// Since the dialog has been closed, return FALSE so that we exit the
	//  application, rather than start the application's message pump.
	return FALSE;
}

int CNkTnlClientCnfApp::ExitInstance()
{
	NkTrace::CTrace::Instance().UnSubscribe(this);

	NkSocket::CSocket::cleanup();
	NkSSL::COpenSSLCtx::cleanup();
	CoUninitialize();

	return CWinApp::ExitInstance();
}

void CNkTnlClientCnfApp::TraceOut(NkTrace::CTrace::TraceClasses traceclass, const wchar_t* pszText)
{
	//TRACE(L"%s\r\n", pszText);
	OutputDebugString(pszText);
}